#include <stdio.h>

int main()
{
	return 0;
}

int stm32_server()
{
	int connectfd = -1;
int datafd = -1;
struct sockaddr_in servaddr;
int ret = 0;

   connectfd = socket(AF_INET,SOCK_STREAM,0);

/*2. 填写服务端自己的IP地址和端口号*/
   bzero(&servaddr,sizeof(servaddr)); //memset(&servaddr,0,sizeof(servaddr));
   servaddr.sin_family = AF_INET;
   servaddr.sin_port = htons(服务端的端口号);
   inet_aton("服务端的点分十进制字符串形式的IP地址"，&servaddr.sin_addr);

3. 为引擎对象绑定服务端自己的IP地址和端口号 ------ bind
   ret = bind(connectfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

4. 将第1步的引擎对象变为管理监控连接用的引擎对象 ------listen
   ret += listen(connectfd,9);
   if(ret)
   {
        printf("bind or listen failed\n");
        .......
   }

5. 循环检查有没有客户端与本服务端建立好连接  ------accept
   一旦发现有客户端与本服务端建立好连接就创建一个与该客户端进行数据传输用的引擎对象，并获得该引擎对象的描述符
   利用数据传输用的引擎对象与对应客户端进行数据交互  ----- read/write send/recv
   无需继续与与对应客户端进行数据交互时，应及时关闭数据传输用的引擎对象 ----close
   while(1)
   {
        datafd = accept(connectfd,NULL,NULL);
        if(datafd < 0)
        {
            if(errno == EINTR)
            {
                continue;
            }
            else
            {
                printf("accept error");
                break;
            }
        }

        调用read/write 或 send/recv与对应客户端进行数据交互

        close(datafd);
        datafd = -1;
   }

6. 无需继续监控连接时，应及时调用close关闭由第4步修改后的引擎对象 ---- close
   close(connectfd);
   connectfd = -1;
	
	return 1;
}

